package leecode

func deleteNode(root *TreeNode, key int) *TreeNode {
	if root == nil {
		//如果遇到空节点 , 返回
		return root
	}
	if root.Val == key {
		if root.Left == nil && root.Right == nil {
			//如果两个节点都为空 , 直接删除当前节点即可
			root = nil
			return root
		} else if root.Left == nil {
			//子节点 左空 , 右不空
			root = root.Right
			return root
		} else if root.Right == nil {
			// 右空 , 左不空
			root = root.Left
			return root
		} else {
			//引用数据类型 , 指向的是同一内容
			temp := root.Right
			for temp.Left != nil {
				temp = temp.Left
			}
			temp.Left = root.Left
			root = root.Right
			return root
		}
	}
	if root.Val > key {
		root.Left = deleteNode(root.Left, key)
	} else {
		root.Right = deleteNode(root.Right, key)
	}
	return root
}
